LINQ restrictie operatoren
Where
De elementen, die deel uitmaken van de outputreeks, zijn die elementen die overeenkomen met de opgegeven beperking. Individuele uitvoerelementen worden niet gewijzigd of getransformeerd.
Personen[] personen = { new Personen { Name = "Jan", Leeftijd = 60 }, new Personen { Name = "An", Leeftijd = 100 }, new Personen { Name = "Peter", Leeftijd = 15 }, new Personen { Name = "Marijke", Leeftijd = 40 }, new Personen { Name = "Judith", Leeftijd = 20 } }; IEnumerable<Personen> vijftigPlussers = personen. Where(x => x.Leeftijd >= 50); Console.WriteLine("Vijftigplussers:"); foreach (Personen persoon in vijftigPlussers) { Console.WriteLine(persoon.Name); }
De code toont het gebruik van de Where
operator. Het predicaat x => x.Leeftijd >= 50
retourneert true voor elke persoon die 50 jaar is of meer. De code produceert de volgende output:
Jan An
Een predicaat is een functie die een boolean true retourneert als aan een bepaalde voorwaarde is voldaan.
Met een overload van Where
kan je de positieindex van een element aan het pedicaat meegeven. In het voorbeeld heeft Jan een positieindex van 0 en Judith een positieindex van 4. De volgende query retourneert Jan en Judith:
Personen[] personen = { new Personen { Name = "Jan", Leeftijd = 60 }, new Personen { Name = "An", Leeftijd = 100 }, new Personen { Name = "Peter", Leeftijd = 15 }, new Personen { Name = "Marijke", Leeftijd = 40 }, new Personen { Name = "Judith", Leeftijd = 20 } }; IEnumerable<Personen> vijftigPlussers = personen.Where((persoon, index) => persoon.Name == "Jan" || index == 4); Console.WriteLine("Vijftigplussers:"); foreach (Personen persoon in vijftigPlussers) { Console.WriteLine(persoon.Name); }
Deze lambda-expressie is verschillend. In deze code is de predikaat functie van het type Func<Personen, int, bool>
. De parameter int
geeft de positie van het element in de invoersequentie weer.